package models;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.Min;

import play.data.validation.Constraints.Max;
import play.db.ebean.Model;
import util.TipoArquivo;

@Entity
public class AtividadeAluno extends Model{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	public long id;
	
	@Enumerated(EnumType.STRING)
	public TipoArquivo tipo;
	
	@Lob
	public byte[] arquivo;
	
	public String fonte;
	
	public boolean corrigida;
	
	@Min(0)
	@Max(100)
	public double nota;
	
	@Temporal(TemporalType.DATE)
	public Date dtCadastro;
	
	// ------------------relacionamentos---------------------//
	@ManyToOne
	@JoinColumn(name="atividade_id")
	public Atividade atividade;
	
	@ManyToOne
	public Matricula aluno;
	
	@OneToMany(cascade=CascadeType.ALL, mappedBy="atividadeAluno", fetch = FetchType.LAZY)
	public List<AtividadeComentario> comentarios = new ArrayList<AtividadeComentario>();

}
